package cn.topcodes.tcsf.admin.service;

import cn.topcodes.tcsf.admin.commons.generic.IGenericService;
import cn.topcodes.tcsf.admin.domain.entity.SysFile;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public interface SysFileService extends IGenericService<SysFile> {

	/**
	 * 保存文件
	 * @param uuid
	 * @param chunks
	 * @param chunk
	 * @param in
	 * @param filename
	 * @param size
	 * @param mime
	 * @param md5
	 * @throws IOException
	 */
	Long saveFile(String uuid, int chunks, int chunk, InputStream in,
						 String filename, long size, String mime, String md5) throws IOException;
	
	/**
	 * 读取文件数据
	 * @param fileId	文件ID
	 * @return	文件输入流
	 */
	InputStream readFile(Long fileId) throws FileNotFoundException;

	/**
	 * 保存文件
	 * @param in 	文件输入流
	 * @param size	文件大小
	 * @param originalFilename 文件名
	 * @param contentType	类型
	 * @return
	 * @throws IOException
	 */
	Long saveFile(InputStream in, long size, String originalFilename, String contentType) throws IOException;

	/**
	 * 文件存储位置
	 * @return
	 */
	public String getStorageFolder();

	/**
	 * 临时文件存储位置
	 * @return
	 */
	public String getTempFolder();

    String generateStoragePath(String dir);
}
